home *** CD-ROM | disk | FTP | other *** search
/ Zoom 2 / Zoom - Release 2 (1996)(Active Software)[!].iso / utilities / blankers / blitzblank_260 / developer / modulesources / bb.fade.c < prev    next >
C/C++ Source or Header  |  1995-02-28  |  4KB  |  172 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <dos/dos.h>
  5. #include <exec/memory.h>
  6. #include <intuition/intuitionbase.h>
  7. #include <intuition/screens.h>
  8. #include <intuition/intuition.h>
  9. #include <proto/exec.h>
  10. #include <proto/intuition.h>
  11. #include <proto/graphics.h>
  12. #include <pragmas/blitzblank_pragmas.h>
  13. #include <BlitzBlank.h>
  14.  
  15. struct Library *BlitzBlankBase;
  16. static const char version[]="$VER: BB.Fade 2.50 (25.12.94)";
  17.  
  18. struct rgb
  19. {
  20.   ULONG r;
  21.   ULONG g;
  22.   ULONG b;
  23. };
  24.  
  25.  
  26. char *text[]={"\33c\33uFade\33n\n\nModule for BlitzBlank\n\nCopyright 1994\nby\nThomas Börkel",
  27.               "_Brightness:",
  28.               "_Delay:" };
  29.  
  30. struct BB_Object object[]={ {&object[1],BB_VGroup,0,0,0,NULL,NULL},
  31.                             {&object[2],BB_Slider,0,99,20,NULL,NULL},
  32.                             {&object[3],BB_Slider,0,20,1,NULL,NULL},
  33.                             {NULL,BB_VGroup_End,0,0,0,NULL,NULL} };
  34.  
  35. struct BB_Message message;
  36.  
  37. struct BB_Screeninfo *screeninfo;
  38.  
  39.  
  40. void waitnobeep(struct Screen *screen)
  41. {
  42.   while (screen->Flags & BEEPING)
  43.   {
  44.     WaitTOF ();
  45.     WaitTOF ();
  46.   }
  47. }
  48.  
  49.  
  50. void blank (void)
  51. {
  52.   int v39=0,depth,colors,i,final;
  53.   long *pal37,r,g,b;
  54.   ULONG *col;
  55.   struct rgb *pal;
  56.   struct IntuitionBase *ibase;
  57.   struct Screen *firstscreen;
  58.   struct ViewPort *vp;
  59.   struct ColorMap *cm;
  60.  
  61.   final=object[1].set;
  62.  
  63.   ibase=(struct IntuitionBase *) OpenLibrary ("intuition.library",39);
  64.   if (ibase)
  65.     v39=TRUE;
  66.   else
  67.     ibase=(struct IntuitionBase *) OpenLibrary ("intuition.library",37);
  68.   CloseLibrary ((struct Library *) ibase);
  69.   firstscreen=screeninfo->bbscreen;
  70.   depth=screeninfo->depth;
  71.   colors=1L << depth;
  72.   vp=&firstscreen->ViewPort;
  73.   cm=vp->ColorMap;
  74.   if (v39)
  75.   {
  76.     if ((pal=calloc (colors,sizeof (struct rgb)))==NULL)
  77.       return;
  78.     if ((col=calloc (colors+2,sizeof (long)*3))==NULL)
  79.       return;
  80.     col[0]=colors << 16;
  81.   }
  82.   else
  83.     if ((pal37=malloc (sizeof (long)*colors))==NULL)
  84.       return;
  85.  
  86.   waitnobeep (firstscreen);
  87.  
  88.   if (!CheckSignal (SIGBREAKF_CTRL_C))
  89.   {
  90.     ScreenToFront (firstscreen);
  91.     BBL_ModuleRunning ();
  92.  
  93.     for (i=0;i<colors;i++)
  94.     {
  95.       if (v39)
  96.       {
  97.         GetRGB32 (cm,i,1,(ULONG *)&pal[i]);
  98.         pal[i].r=pal[i].r & 255;
  99.         pal[i].g=pal[i].g & 255;
  100.         pal[i].b=pal[i].b & 255;
  101.       }
  102.       else
  103.         pal37[i]=GetRGB4 (cm,i);
  104.     }
  105.  
  106.     if (BBL_FadeDown (firstscreen,final,object[2].set))
  107.       Wait (SIGBREAKF_CTRL_C);
  108.  
  109.     if (BBL_ScreenAvailable (firstscreen))
  110.     {
  111.       waitnobeep (firstscreen);
  112.  
  113.       for (i=0;i<=colors-1;i++)
  114.       {
  115.         if (v39)
  116.         {
  117.           r=pal[i].r;
  118.           g=pal[i].g;
  119.           b=pal[i].b;
  120.           col[1+i*3]=r|r << 8|r << 16|r << 24;
  121.           col[2+i*3]=g|g << 8|g << 16|g << 24;
  122.           col[3+i*3]=b|b << 8|b << 16|b << 24;
  123.         }
  124.         else
  125.           SetRGB4 (vp,i,pal37[i] >> 8 & 15,pal37[i] >> 4 & 15,pal37[i] & 15);
  126.       }
  127.       if (v39)
  128.         LoadRGB32 (vp,col);
  129.  
  130.     }
  131.   }
  132.   return;
  133. }
  134.  
  135.  
  136. void main(int argc,char **argv)
  137. {
  138.  
  139.   if (!(BlitzBlankBase=OpenLibrary ("blitzblank.library",BLITZBLANKLIB_VER)))
  140.     exit (0);
  141.  
  142.   message.flags=BBF_NoWatch|BBF_FirstScreen;
  143.   message.first=&object[0];
  144.  
  145.   if (strcmp (argv[1],"BLANK")==0)
  146.   {
  147.     StrToLong (argv[3],(long *) &screeninfo);
  148.     BBL_SendMessage (&message,argv[2]);
  149.     if (screeninfo->bbscreen)
  150.       blank ();
  151.     BBL_BlankDone ();
  152.   }
  153.   else
  154.   {
  155.     message.infotext=BBL_GetString (210,text[0]);
  156.     object[1].label=BBL_GetString (211,text[1]);
  157.     object[2].label=BBL_GetString (212,text[2]);
  158.     if (strcmp (argv[1],"CONFIG")==0)
  159.     {
  160.       BBL_SendMessage (&message,argv[2]);
  161.     }
  162.     else
  163.     {
  164.       message.first=NULL;
  165.       BBL_SendMessage (&message,argv[2]);
  166.     }
  167.   }
  168.   CloseLibrary (BlitzBlankBase);
  169.   exit (0);
  170. }
  171.  
  172.